package ar.com.sectorwine.dto;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import ar.com.sectorwine.entities.Users;
import ar.com.sectorwine.repository.UsuariosDAO;

@Repository
public class UsuarioABMDTOMapper {

	@Autowired
	UsuariosDAO usuariosDAO;
	@Autowired
	EmpresasDTOMapper empresasDTOMapper;

	public Users obtenerObjetoDelDominioDesdeDTO(UsuarioABMDTO usuarioDTO) {

		Users usuario = usuariosDAO.findByUserName(usuarioDTO.getUsername());
		if (usuario != null) {
			usuario.setUsername(usuarioDTO.getUsername());
			usuario.getPerfilUsuario().setCargo(usuarioDTO.getCargo());
			usuario.setNombre(usuarioDTO.getNombre());
			usuario.setApellido(usuarioDTO.getApellido());
			usuario.getPerfilUsuario().setTelefonoFijo(usuarioDTO.getTelefonoFijo());
			usuario.getPerfilUsuario().setTelefonoMovil(usuarioDTO.getTelefonoMovil());
			return usuario;
		}else {
			return null;
		}
		
	}
	
	public List<UsuarioABMDTO> obtenerDTODesdeObjetoDelDominio(List<Users> usuarios) {

		List<UsuarioABMDTO> result = new ArrayList<UsuarioABMDTO>() ;
		for(Users u: usuarios){
			result.add(obtenerDTODesdeObjetoDelDominio(u));
		}
		return result;

	}

	public UsuarioABMDTO obtenerDTODesdeObjetoDelDominio(Users usuario) {

		UsuarioABMDTO usuarioABMDTO = new UsuarioABMDTO();
				
		usuarioABMDTO.setUsername(usuario.getUsername());
		usuarioABMDTO.setCargo(usuario.getPerfilUsuario().getCargo());
		usuarioABMDTO.setNombre(usuario.getNombre());
		usuarioABMDTO.setApellido(usuario.getApellido());
		usuarioABMDTO.setTelefonoFijo(usuario.getPerfilUsuario().getTelefonoFijo());
		usuarioABMDTO.setTelefonoMovil(usuario.getPerfilUsuario().getTelefonoMovil());
		usuarioABMDTO.setEmpresas(empresasDTOMapper.obtenerDTODesdeObjetoDelDominio(usuario.getPerfilUsuario().getEmpresas()));
		usuarioABMDTO.setSiguiendo(new ArrayList<Long>());
		for(Long u: usuario.getPerfilUsuario().getEmpresasSeguidas()){
			usuarioABMDTO.getSiguiendo().add(u);
		}
		
		return usuarioABMDTO;

	}

}
